//
//  NSDate+Extension.swift
//  weibo
//
//  Created by 陈经纬 on 16/7/26.
//  Copyright © 2016年 陈经纬. All rights reserved.
//

import UIKit

extension NSDate{
    /**
     创建一个nsdate时间对象
     
     - parameter timeString: 服务器返回的时间
     - parameter formatter:  时间的格式
     */
    class func creatDate(timeString:String,formatter:String) ->NSDate {
        let DateFormatter = NSDateFormatter()
        DateFormatter.locale = NSLocale(localeIdentifier: "en")
        DateFormatter.dateFormat = formatter
        
        let time = DateFormatter.dateFromString(timeString)
        return time!

        
    }
    
    //创建一个根据服务器时间和当前系统时间对比的差值显示的字符串方法
//    刚刚(一分钟内)
//    X分钟前(一小时内)
//    X小时前(当天)
//    
//    昨天 HH:mm(昨天)
//    
//    MM-dd HH:mm(一年内)
//    yyyy-MM-dd HH:mm(更早期)
    func descriptionStr() -> String {
        
        //创建时间格式
        let DateFormatter = NSDateFormatter()
        DateFormatter.locale = NSLocale(localeIdentifier: "en")
        
        var formatterStr = "HH:mm"
        
        //创建日期类
       let calendar = NSCalendar.currentCalendar()
        //判断是否今天,self:外部调用时候的服务器时间
        //先判断1分钟之内-一小时内-今天
        
        if calendar.isDateInToday(self){
            
          let timeDisyance = Int(NSDate().timeIntervalSinceDate(self))
            if timeDisyance < 60 {//1分钟内
                return "刚刚"
            }
           else if timeDisyance < (60 * 60)  {//一小时内
                return "\(timeDisyance / 60)" + "分钟前"
            }
           else if timeDisyance < (60 * 60 * 24) {//今天内
                return "\(timeDisyance / (60 * 60))" + "小时前"
            }
        }
        
        //判断是否为昨天
        else if calendar.isDateInYesterday(self){
          formatterStr = "昨天" + formatterStr
            
        }
            //比昨天更早的时间
        else {
            //一年内
             let distanY = calendar.components(NSCalendarUnit.Year, fromDate: self, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))
            if distanY.year < 1{
                formatterStr = "MM-dd" + formatterStr
                
            }
            else{//一年前
                formatterStr = "yyyy-MM-dd " + formatterStr
            }
            
        }
        DateFormatter.dateFormat = formatterStr
        
        return DateFormatter.stringFromDate(self)
    }
}
